/***************************************************
 @Name :        小铭同学
 @Time :        2025-09-03
 @Email :       LiaoMingWJ233@163.com
 @Comment :     TCP服务器
 @FileName :    widget.h
 @Version :     1.0
****************************************************/


#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtNetwork>
#include <QTcpServer>
#include <QTcpSocket>
#include <QMessageBox>
#include <QTextCodec>
#include <QDebug>
#include <QTextCodec>
#include <QDateTime>
#include <QKeyEvent>
#include <QFocusEvent>
#include <QPushButton>


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

private slots:
    // 槽函数声明
    void onNewConnection();                    // 处理新客户端连接
    void onReadyRead();                        // 读取客户端发送的数据
    void onSendButtonClicked();                // 处理发送按钮点击事件
    void onClientDisconnected();               // 处理客户端断开连接
    void onServerStateChanged(QAbstractSocket::SocketState state); // 服务器状态变化

    void on_exit_clicked();

    void Send(QString message);

    void PushButton_Tcp(QPushButton* PushButton);

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    QTcpServer *tcpServer;                     // TCP服务器对象
    QTcpSocket *clientSocket;                  // 当前连接的客户端socket
    QList<QTcpSocket*> clientSockets;          // 所有连接的客户端列表


    void updateServerStatus(const QString &status); // 更新服务器状态显示
    void startServer();                             // 启动TCP服务器
    void stopServer();                              // 停止TCP服务器

    QTextCodec *m_gbkCodec;                         // 添加成员变量

};
#endif // WIDGET_H
